package cn.javasm.demo;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.IOException;

/**
 * @version: 0.1
 * 读取表格
 */
public class PoiDemo {
    public static void main(String[] args) throws IOException {
        // 创建工作簿
        Workbook workbook = new XSSFWorkbook("D:\\employee.xlsx");
        // 通过工作簿获取sheet
//        Sheet sheet = workbook.getSheet("员工信息表");
        // 根据索引去获取sheet
        Sheet sheet = workbook.getSheetAt(0);
        // 获取一共有多少行
        int maxRow = sheet.getLastRowNum();
        for (int i = 0; i <= maxRow;i++){
            // 获取具体的每一行
            Row row = sheet.getRow(i);
            // 获取这一行有多少个单元格
            short lastCellNum = row.getLastCellNum();
            StringBuilder stringBuilder = new StringBuilder();
            for (int j = 0;j <= lastCellNum;j++){
                // 获取单元格
                Cell cell = row.getCell(j);
                if (cell != null){
                    Object value = getValue(cell);
                    stringBuilder.append(value).append("-----");
                }
            }
            System.out.println(stringBuilder);
        }

    }

    // 根据单元格类型的不同 返回不同的内容
    public static Object getValue(Cell cell){
        // 获取单元格的类型
        CellType cellType = cell.getCellType();
        Object obj = null;
        switch (cellType){
            case STRING: //字符串类型
                obj = cell.getStringCellValue();
                break;
            case BOOLEAN:// 布尔类型
                obj = cell.getBooleanCellValue();
                break;
            case NUMERIC:// 数字或者日期类型
                if (DateUtil.isCellDateFormatted(cell)){
                    // 日期类型
                    obj = cell.getDateCellValue();
                }else {
                    // 数字类型
                    obj = cell.getNumericCellValue();
                }
                break;
            case FORMULA:// 函数公式类型
                obj = cell.getCellFormula();
                break;
        }
        return obj;
    }
}
